package redis.utils;

import jakarta.servlet.http.HttpSession;
import org.springframework.web.servlet.HandlerInterceptor;
import redis.pojo.User;

public class LoginInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, Object handler) throws Exception {

        // 1 获取session
        HttpSession session = request.getSession();
        // 2 获取session中的用户
        Object user = session.getAttribute("user");
        // 3 判断用户是否存在
        if (user==null){
            // 4 不存在 拦截  返回401状态码
            response.setStatus(401);
            return false;
        }
        // 5 存在 保存用户信息到ThreadLocal
        UserHolder.saveUser((User) user);
        // 6 放行
        return true;
    }

    @Override
    public void afterCompletion(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, Object handler, Exception ex) throws Exception {

        // 移除用户
        UserHolder.removeUser();
    }
}
